package com.rc.web.mapper;

import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.row.Row;
import com.rc.pojo.po.Maintenance;

import java.util.List;

import static com.rc.pojo.po.table.MaintenanceTableDef.MAINTENANCE;
import static com.rc.pojo.po.table.TaskTableDef.TASK;
import static com.rc.pojo.po.table.UserTableDef.USER;

/**
 * 维护记录表 映射层。
 * 提供维护记录相关的数据库操作接口
 */
public interface MaintenanceMapper extends BaseMapper<Maintenance> {

    /**
     * 根据植物项ID查询最近四条维护图片
     * @param plantItemId 植物项ID
     * @return 维护记录列表（仅包含图片）
     */
    default List<Maintenance> selectLastFourByPlantItemId(long plantItemId) {
        return selectListByQuery(QueryWrapper.create()
                .select(MAINTENANCE.IMG)
                .where(MAINTENANCE.PLANT_ITEM_ID.eq(plantItemId))
                .limit(4)
        );
    }

    /**
     * 根据植物项ID查询已完成维护记录
     * @param plantItemId 植物项ID
     * @return 维护记录列表（包含员工姓名和任务标题）
     */
    default List<Row> selectFinishByPlantItemId(long plantItemId) {
        return selectRowsByQuery(QueryWrapper.create()
                .select(MAINTENANCE.ALL_COLUMNS,USER.NAME.as("employeeName"),TASK.TITLE)
                .join(USER).on(MAINTENANCE.EMPLOYEE_ID.eq(USER.ID))
                .join(TASK).on(MAINTENANCE.TASK_ID.eq(TASK.ID))
                .where(MAINTENANCE.PLANT_ITEM_ID.eq(plantItemId))
        );
    }
}

